<?php

namespace Model;

class Database{
	
	private $mysqli = null;	
	private $m_dbsettings = null;

	public function __construct()
	{
		$this->m_dbsettings = new \Model\dbsettings();
	}
	
	// Skapar en anslutning mot databasen
	public function Connect() {
		$this->mysqli = new \mysqli($this->m_dbsettings->host,
								   	$this->m_dbsettings->user,
								   	$this->m_dbsettings->pass,
								   	$this->m_dbsettings->db);
		if($this->mysqli->connect_error) {
			throw new \Exception($this->mysqli->connect_error);
		}
		
		// Väljer teckenkodning
		$this->mysqli->set_charset("utf8");
                
        return true;
	}	
		
	// Används för att returnera antalet rader i en tabell
	public function SelectOne($stmt){
        
        $ret;
		
		// Binder resultatet i en variabel
        if ($stmt->bind_result($ret) == false) {
            throw new \Exception($this->mysqli->error);
        }
        
		// Om användarnamnet redan finns returneras det
        if($stmt->fetch()){
        	return $ret;
        }
        
        $stmt->close();
        
		// Annars returneras false för att indikera att användarnamnet är ledigt
		return false;
	}	
		
	// Förebereder min sql-query så att den kan köras
	public function Prepare($sql){

		// Ser till att min inskickade query kan användas i databasanrop
		$stmt = $this->mysqli->prepare($sql);
        
		// Kontrollerar om min query kan användas
        if ($stmt === false) {
            throw new \Exception($this->mysqli->error);
        }
		return $stmt;        
	}
	
	// Kör ett sql query
	public function Execute($stmt){
		if ($stmt->execute() == false) {
            throw new \Exception($this->mysqli->error);
        }
		
		// Om allt gick bra och inga undantag har kastats returneras true
		else{
			return true;
		}
	}
	
	// Stänger kopplingen mot databasen
	public function Close() {
        return $this->mysqli->close();
    }
}
